home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / var / lib / dpkg / info / ifupdown.postinst < prev    next >
Text File  |  2009-09-22  |  6KB  |  165 lines

  1. #!/bin/sh
  2. set -e
  3.  
  4. . /usr/share/debconf/confmodule
  5.  
  6. MYNAME="${0##*/}"
  7.  
  8. report() { echo "${MYNAME}: $*" ; }
  9. report_warn() { report "Warning: $*" >&2 ; }
  10. report_err() { report "Error: $*" >&2 ; }
  11.  
  12. ATTEMPT_CONVERSION=false
  13. if [ "$1" = "configure" ] && [ "$2" != "" ] &&
  14.         dpkg --compare-versions "$2" le "0.6.2pr-3"
  15. then
  16.   # Get answers to questions
  17.   db_get ifupdown/convert-interfaces;    ATTEMPT_CONVERSION="$RET"
  18. fi
  19.  
  20. # Update /etc/network/interfaces from "noauto" to "auto"
  21. if [ "$ATTEMPT_CONVERSION" = "true" ]; then
  22.   echo
  23.   echo -n "Automatically converting /etc/network/interfaces"
  24.   (
  25.     cd /etc/network;
  26.     if /usr/share/ifupdown/upgrade-from-0.5.x.pl \
  27.       < interfaces > interfaces.dpkg-new 2>/dev/null
  28.     then
  29.       echo " succeeded."
  30.       mv interfaces interfaces.dpkg-old
  31.       mv interfaces.dpkg-new interfaces
  32.       echo "Old interfaces file saved as interfaces.dpkg-old."
  33.     else
  34.       echo " failed."
  35.       echo
  36.       echo "If you wish to reattempt the conversion you may run"
  37.       echo "    cat /etc/network/interfaces |"
  38.       echo "         /usr/share/ifupdown/upgrade-from-0.5.x.pl"
  39.       echo
  40.     fi
  41.   )
  42. fi
  43.  
  44.  
  45. ATTEMPT_CONVERSION=false
  46. if [ "$1" = "configure" ] && [ "$2" != "" ] &&
  47.     dpkg --compare-versions "$2" lt "0.6.7ubuntu7"
  48. then
  49.   # Get answers to questions
  50.   db_get ifupdown/convert-interfaces-hotplug;    ATTEMPT_CONVERSION="$RET"
  51. fi
  52.  
  53. # Update /etc/network/interfaces from "mapping hotplug" to "auto"
  54. if [ "$ATTEMPT_CONVERSION" = "true" ]; then
  55.   echo
  56.   echo -n "Automatically converting /etc/network/interfaces"
  57.   (
  58.     cd /etc/network;
  59.     if /usr/share/ifupdown/upgrade-from-hotplug.pl \
  60.       < interfaces > interfaces.dpkg-new 2>/dev/null
  61.     then
  62.       echo " succeeded."
  63.       mv interfaces interfaces.dpkg-old
  64.       mv interfaces.dpkg-new interfaces
  65.       echo "Old interfaces file saved as interfaces.dpkg-old."
  66.     else
  67.       echo " failed."
  68.       echo
  69.       echo "If you wish to reattempt the conversion you may run"
  70.       echo "    cat /etc/network/interfaces |"
  71.       echo "         /usr/share/ifupdown/upgrade-from-hotplug.pl"
  72.       echo
  73.     fi
  74.   )
  75. fi
  76.  
  77.  
  78. # For every active ifupdown-controlled dhclient interface, copy
  79. # /var/run/dhclient.pid, so that the new ifdown is able to kill
  80. # dhclient.
  81. #
  82. # the old version had a bug with more than one DHCP iface anyway,
  83. # so we don't know which one the PID file actually belongs to.
  84. if [ "$1" = "configure" -a "$2" != "" ] &&
  85.      dpkg --compare-versions "$2" le "0.6.4-4.1" &&
  86.      [ -f /etc/network/run/ifstate -a -x /sbin/dhclient ]
  87. then
  88.  
  89.   sed -e 's/^.*=//' /etc/network/run/ifstate |
  90.     while read iface; do
  91.       # handle \<newline>-continued lines
  92.       if sed -e '/^[[:space:]]*#/b;:g /\\$/{N;s/\\\n//;bg;}' /etc/network/interfaces | grep -qe "^[[:space:]]*iface[[:space:]]*\\b${iface}\\b[[:space:]]*.*\\bdhcp\\b.*" &&
  93.           [ -f "/var/run/dhclient.pid" ] &&
  94.           [ ! -f "/var/run/dhclient.${iface}.pid" ]
  95.       then
  96.         # copy original file.  If dhclient was started
  97.         # manually, one can still use dhclient.pid, if started
  98.         # by ifupdown, the new ifupdown can take it down with 
  99.         # dhclient.${iface}.pid.  Obsolete files are removed during
  100.         # next boot (bootmisc.sh).
  101.         cp /var/run/dhclient.pid "/var/run/dhclient.${iface}.pid"
  102.       fi
  103.     done
  104. fi
  105.  
  106. # Move /etc/network/ifstate or /etc/network/run/ifstate to
  107. # /var/run/network/ifstate if that has been turned into a tmpfs already
  108. if [ "$1" = configure -a "$2" != "" ] &&
  109.      dpkg --compare-versions "$2" lt "0.6.7ubuntu4"
  110. then
  111.     if mountpoint -q /var/run; then
  112.     [ -d /var/run/network ] || mkdir /var/run/network
  113.     [ ! -e /etc/network/ifstate ] || mv -f /etc/network/ifstate /var/run/network/ifstate
  114.     [ ! -e /etc/network/run/ifstate ] || mv -f /etc/network/run/ifstate /var/run/network/ifstate
  115.     else
  116.     # Yes, this will break things, but only until reboot <g>
  117.     rm -f /etc/network/ifstate /etc/network/run/ifstate
  118.     if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
  119.         /usr/share/update-notifier/notify-reboot-required
  120.     fi
  121.     fi
  122.     [ ! -d /etc/network/run ] || rmdir /etc/network/run 2>/dev/null || true
  123. fi
  124.  
  125. # Remove the ifupdown and ifupdown-clean init script symlinks
  126. if [ "$1" = "configure" -a "$2" != "" ] &&
  127.      dpkg --compare-versions "$2" lt "0.6.7ubuntu4"
  128. then
  129.     rm -f /etc/init.d/ifupdown /etc/init.d/ifupdown-clean
  130.     rm -f /etc/default/ifupdown
  131.     
  132.     update-rc.d -f ifupdown remove
  133.     update-rc.d -f ifupdown-clean remove
  134. fi
  135.  
  136. # Remove the loopback init script symlinks
  137. if [ "$1" = "configure" -a "$2" != "" ] &&
  138.      dpkg --compare-versions "$2" lt "0.6.8ubuntu19"
  139. then
  140.     update-rc.d -f loopback remove
  141. fi
  142.  
  143. # Generic stuff done on all configurations
  144. if [ "$1" = "configure" ] ; then
  145.   if [ -f /etc/network/interfaces ] ; then
  146.     # TODO: This should be handled with debconf and the script
  147.     # could introduce the line there directly
  148.     if ! grep -q "^[[:space:]]*iface[[:space:]]\+lo[[:space:]]\+inet[[:space:]]\+loopback\>" /etc/network/interfaces ; then
  149.       report_warn "No 'iface lo' definition found in /etc/network/interfaces"
  150.     fi
  151.     if ! grep -q "^[[:space:]]*auto[[:space:]].*\<lo\>" /etc/network/interfaces ; then
  152.       report_warn "No 'auto lo' statement found in /etc/network/interfaces"
  153.     fi
  154.   else  # ! -f /etc/network/interfaces
  155.     echo "Creating /etc/network/interfaces."
  156.     echo "# interfaces(5) file used by ifup(8) and ifdown(8)" > /etc/network/interfaces
  157.     echo "auto lo" >> /etc/network/interfaces
  158.     echo "iface lo inet loopback" >> /etc/network/interfaces
  159.   fi
  160. fi
  161.  
  162. db_stop
  163.  
  164.  
  165.